package com.wish.wishfinancial_service.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 
 * </p>
 *
 * @author weijiaz
 * @since 2021-04-10
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_cf_contract")
public class TCfContract implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 出房合同编号（系统生成）
     */
    @TableField("cf_contract_no")
    private String cfContractNo;

    /**
     * 外部合同编号（线下合同编号）
     */
    @TableField("out_contract_no")
    private String outContractNo;

    /**
     * 上一合同ID，续约合同的时候
     */
    @TableField("last_contract_id")
    private Long lastContractId;

    /**
     * 上一合同编号
     */
    @TableField("last_contract_no")
    private String lastContractNo;

    /**
     * 商户ID
     */
    @TableField("business_id")
    private Long businessId;

    /**
     * 部门ID
     */
    @TableField("dept_id")
    private Long deptId;

    /**
     * 部门编号
     */
    @TableField("dept_no")
    private String deptNo;

    /**
     * 房源ID
     */
    @TableField("room_id")
    private String roomId;

    /**
     * 房源编号
     */
    @TableField("room_code")
    private String roomCode;

    /**
     * 承租房间(使用房源名称)
     */
    @TableField("room_name")
    private String roomName;

    /**
     * 收房合同ID（没有收房合同可以录入出房合同）
     */
    @TableField("sf_contract_id")
    private Long sfContractId;

    /**
     * 收房合同编号（没有收房合同可以录入出房合同）
     */
    @TableField("sf_contract_no")
    private String sfContractNo;

    /**
     * 房产编号
     */
    @TableField("house_id")
    private String houseId;

    /**
     * 房产信息(考虑在房产表中增加house_name，楼栋，单元，门牌号和居室，然后带出)
     */
    @TableField("house_name")
    private String houseName;

    /**
     * 小区名(使用楼盘名称)
     */
    @TableField("premise_name")
    private String premiseName;

    /**
     * 居住人数(出房的时候录入)
     */
    @TableField("people_num")
    private Integer peopleNum;

    /**
     * 租客ID
     */
    @TableField("tenant_id")
    private Long tenantId;

    /**
     * 租客姓名
     */
    @TableField("tenant_name")
    private String tenantName;

    /**
     * 租客手机号
     */
    @TableField("tenant_phone")
    private String tenantPhone;

    /**
     * 租客紧急联系号
     */
    @TableField("tenant_emergency_phone")
    private String tenantEmergencyPhone;

    /**
     * 租客证件号
     */
    @TableField("tenant_card_no")
    private String tenantCardNo;

    /**
     * 租客联系地址
     */
    @TableField("tenant_contact_address")
    private String tenantContactAddress;

    /**
     * 租约期限开始日
     */
    @TableField("start_date")
    private LocalDateTime startDate;

    /**
     * 租约期限结束日
     */
    @TableField("end_date")
    private LocalDateTime endDate;

    /**
     * 租约期限（月）,直接选择租约期限的时候，没有选，暂时不设定
     */
    @TableField("signing_cycle")
    private LocalDateTime signingCycle;

    /**
     * 承租月租金
     */
    @TableField("month_rent")
    private BigDecimal monthRent;

    /**
     * 押金
     */
    @TableField("deposit")
    private BigDecimal deposit;

    /**
     * 收款方式(押X付Y的X)
     */
    @TableField("deposit_type")
    private Integer depositType;

    /**
     * 收款方式（押X付Y的Y）
     */
    @TableField("payment_type")
    private Integer paymentType;

    /**
     * 房租收取设置提前天数,天
     */
    @TableField("advance_days")
    private Integer advanceDays;

    /**
     * 房租收取设置固定日, 号（自然月）
     */
    @TableField("fixed_day")
    private Integer fixedDay;

    /**
     * 租客承担付费(款项),各款项逗号拼接保存
     */
    @TableField("tenant_expenses")
    private String tenantExpenses;

    /**
     * 承租类型,"0:整租（分散式）
1:合租（分散式） 
2:单身公寓（集中式）"
     */
    @TableField("sign_type")
    private Integer signType;

    /**
     * 补充条款
     */
    @TableField("supplementary_terms")
    private String supplementaryTerms;

    /**
     * 有无特殊人群,0:无 1:有
     */
    @TableField("have_special_people")
    private Boolean haveSpecialPeople;

    /**
     * 是否房租分期,0:否 1:是
     */
    @TableField("rent_installment_flg")
    private Boolean rentInstallmentFlg;

    /**
     * 是否租约保理,0:否 1:是
     */
    @TableField("zybl_flg")
    private Boolean zyblFlg;

    /**
     * 合同状态,"1:草稿
2:已提交
3:已解约
4:已结束
9:作废"
     */
    @TableField("contract_state")
    private Integer contractState;

    /**
     * 续约状态,"0: 未续约
1: 已续约"
     */
    @TableField("xuyue_state")
    private Integer xuyueState;

    /**
     * 冻结状态：0未冻结 1已冻结
     */
    @TableField("freeze_status")
    private Boolean freezeStatus;

    /**
     * 合同录入日期,暂定设置为提交日期
     */
    @TableField("input_date")
    private LocalDateTime inputDate;

    /**
     * 合同签订日期, 暂定设置为提交日期
     */
    @TableField("signing_date")
    private LocalDateTime signingDate;

    /**
     * 合同审核日期,暂定设置为提交日期
     */
    @TableField("audit_date")
    private LocalDateTime auditDate;

    /**
     * 合同录入人,暂定设置为创建人
     */
    @TableField("input_user_id")
    private Long inputUserId;

    /**
     * 出房人,暂定设置为创建人
     */
    @TableField("cf_user_id")
    private Long cfUserId;

    /**
     * 出房人姓名
     */
    @TableField("cf_user_name")
    private String cfUserName;

    /**
     * 预留字段1
     */
    @TableField("reserve1")
    private BigDecimal reserve1;

    /**
     * 预留字段2
     */
    @TableField("reserve2")
    private Integer reserve2;

    /**
     * 预留字段3
     */
    @TableField("reserve3")
    private String reserve3;

    /**
     * 预留字段4
     */
    @TableField("reserve4")
    private String reserve4;

    /**
     * 预留字段5
     */
    @TableField("reserve5")
    private String reserve5;

    /**
     * 删除标识,0:未删除，1:删除
     */
    @TableField("del_flg")
    private Boolean delFlg;

    /**
     * 创建用户ID
     */
    @TableField("create_userid")
    private Long createUserid;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新用户ID
     */
    @TableField("update_userid")
    private Long updateUserid;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;


}
